﻿using BLL;
using Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using HRP.Utilidades;
using System.IO;

namespace HRP.Private.Funcionarios
{
    public partial class Editar : System.Web.UI.Page
    {
        private string _NomeFuncionario
        {
            get
            {
                if (ViewState["NomeFuncionario"] != null)
                {
                    return (string)ViewState["NomeFuncionario"];
                }
                return string.Empty;
            }
            set
            {
                ViewState["NomeFuncionario"] = value;
            }
        }
        private string _FotoFuncionario
        {
            get
            {
                if (ViewState["FotoFuncionario"] != null)
                {
                    return (string)ViewState["FotoFuncionario"];
                }
                return string.Empty;
            }
            set
            {
                ViewState["FotoFuncionario"] = value;
            }
        }

        public string NomeFuncionario
        {
            get
            {
                return _NomeFuncionario;
            }
            set
            {
                _NomeFuncionario = value;
            }
        }
        public string FotoFuncionario
        {
            get
            {
                return _FotoFuncionario;
            }
            set
            {
                _FotoFuncionario = value;
            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack && Session["EmpresaActual"] != null)
            {
                hrp_empresas empresa = (hrp_empresas)Session["EmpresaActual"];
                Session["VistaEmpresaId"] = ((hrp_empresas)Session["EmpresaActual"]).id;
                CarregarFuncionario();
            }

            alterarPanel.Visible = true;
            errorPanel.Visible = !alterarPanel.Visible;
            msgPanel.Visible = !alterarPanel.Visible;

            AlterarFuncionarioBut.Click += new EventHandler(AlterarFuncionarioBut_Click);
            //AdicionarDocBT.Click += new EventHandler(AdicionarDocBT_Click);
            //AdicionarAdiantamentoBT.Click += new EventHandler(AdicionarAdiantamentoBT_Click);
            Page.PreRender += Page_PreRender;
        }

        void AlterarFuncionarioBut_Click(object sender, EventArgs e)
        {
            if (Session["EmpresaActual"] != null)
            {
                hrp_empresas empresa = (hrp_empresas)Session["EmpresaActual"];
                //caminho foto
                string finalPath = FotoFuncionario;
                //TODO: mimetype
                if (FileUpload1.HasFile && FileUpload1.PostedFile.ContentType.StartsWith("image"))
                {
                    string fileName = FileUpload1.PostedFile.FileName;
                    FileInfo fi = new FileInfo(fileName);
                    string ext = fi.Extension;
                    string path = Server.MapPath("/images/" + empresa.id + "/") + Guid.NewGuid().ToString() + ext;
                    string folderPath = Server.MapPath("/images/" + empresa.id + "/");
                    if (!System.IO.Directory.Exists(folderPath))
                    {
                        System.IO.Directory.CreateDirectory(folderPath);
                    }
                    FileUpload1.PostedFile.SaveAs(path);
                    //gravar na bd caminho de imagem
                    int index = path.LastIndexOf("images");
                    finalPath = path.Substring(index - 1, (path.Count() - index + 1));
                }

                if (EditarDadosUC.GravarAlterações(finalPath) && EditarContratoUC.GravarAlterações())
                {
                    alterarPanel.Visible = false;
                    errorPanel.Visible = false;
                    msgPanel.Visible = true;
                    Session["FuncionarioId"] = null;
                }
            }

        }

        void Page_PreRender(object sender, EventArgs e)
        {
            if (Session["EmpresaActual"] != null && Session["VistaEmpresaId"] != null && Request.QueryString["id"] != null)
            {
                hrp_empresas empresa = (hrp_empresas)Session["EmpresaActual"];
                if (empresa.id != (int)Session["VistaEmpresaId"])//verifica se a empresa foi mudada
                {
                    Session["VistaEmpresaId"] = ((hrp_empresas)Session["EmpresaActual"]).id;
                    alterarPanel.Visible = true;
                    msgPanel.Visible = false;
                    errorPanel.Visible = !alterarPanel.Visible;
                }
            }
        }

        void CarregarFuncionario()
        {
            hrp_empresas empresa = (hrp_empresas)Session["EmpresaActual"];
            int id_func = 0;
            Int32.TryParse(Request.QueryString["id"], out id_func);
            var funcionarioActual = Funcionario_BLL.Instance.ObterFuncionario((int)Session["idclient"], empresa.id, id_func);
            NomeFuncionario = funcionarioActual.Dados.nome;
            FotoFuncionario = !string.IsNullOrEmpty(funcionarioActual.Dados.foto) ? funcionarioActual.Dados.foto : utilidades.fotoFuncionarioDefault;
            EditarDadosUC.FuncionarioActual = funcionarioActual;
            EditarContratoUC.FuncionarioActual = funcionarioActual;
            //FichaAgendaUC.FuncionarioActual = funcionarioActual;
            //verAdiantamentosID.FuncionarioActual = funcionarioActual;
            //EditarDocs.FuncionarioActual = funcionarioActual;
            Session["FuncionarioId"] = id_func;
        }


        //void AdicionarDocBT_Click(object sender, EventArgs e)
        //{            
        //    Response.Redirect("/private/documentos/criardocfuncionario.aspx");
        //}

        //void AdicionarAdiantamentoBT_Click(object sender, EventArgs e)
        //{
        //    Response.Redirect("/private/adiantamentos/criar.aspx");
        //}


      
    }
}